package org.micode.demo.db.service.impl;

import org.micode.demo.db.dao.SysConfigDao;
import org.micode.demo.db.domain.dto.SysConfigDTO;
import org.micode.demo.db.domain.entity.SysConfigDO;
import org.micode.demo.db.domain.query.SysConfigQuery;
import org.micode.demo.db.service.DaoSysConfigService;
import org.micode.common.domain.vo.EditObjVO;
import org.micode.libs.dao.base.BaseAllServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 配置信息(sys_config) 服务实现类
 *
 * author: wutianbin
 */
@Service
@Slf4j
public class DaoSysConfigServiceImpl
        extends BaseAllServiceImpl<Long, SysConfigDTO, SysConfigDO, SysConfigQuery, SysConfigDao>
        implements DaoSysConfigService {

    @Autowired
    private SysConfigDao sysConfigDao;

    @Override
    protected SysConfigDao getMyDao() {
        return sysConfigDao;
    }

    @Override
    public Map<String, String> loadAll(String paramType) {
        List<SysConfigDTO> list = sysConfigDao.listAll(paramType);
        if (list == null || list.size() <= 0) {
            return null;
        }
        Map<String, String> valueMap = new ConcurrentHashMap<>();
        for(SysConfigDTO info : list) {
            String name = info.getParamKey();
            String value = info.getParamValue();
            valueMap.put(name, value);
        }
        return valueMap;
    }

    @Override
    public List<SysConfigDTO> loadAllList() {
        return sysConfigDao.listAllList();
    }

    @Override
    public String readByTypeAndKey(String paramType, String paramKey) {
        List<SysConfigDTO> list = sysConfigDao.getByTypeAndKey(paramType, paramKey);
        if (list == null || list.size() <= 0) {
            return null;
        }
        return list.get(0).getParamValue();
    }

    @Override
    public int deleteByKeys(EditObjVO<List<Long>> delIds) {
        return 0;
    }

}
